#ifndef __jnihelper_h__
#define __jnihelper_h__

#include <jni.h>

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_FreeType_initFreeTypeJni(JNIEnv*, jclass);

JNIEXPORT void JNICALL Java_com_koc_robot_freetype_FreeType_doneFreeTypeJni(JNIEnv*, jclass, jlong);

JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_FreeType_newMemoryFace
(JNIEnv*, jclass, jlong, jobject, jint, jint);
    
JNIEXPORT void JNICALL Java_com_koc_robot_freetype_FreeType_doneFace
(JNIEnv*, jclass, jlong);

JNIEXPORT jboolean JNICALL Java_com_koc_robot_freetype_FreeType_setPixelSizes
(JNIEnv*, jclass, jlong, jint, jint);
    
JNIEXPORT jboolean JNICALL Java_com_koc_robot_freetype_FreeType_loadGlyph
(JNIEnv*, jclass, jlong, jint, jint);
    
JNIEXPORT jboolean JNICALL Java_com_koc_robot_freetype_FreeType_renderGlyph
(JNIEnv*, jclass, jlong, jint);
    
JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_FreeType_getCharIndex
(JNIEnv*, jclass, jlong, jint);

/* Bitmap */
JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Bitmap_getRows
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Bitmap_getWidth
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Bitmap_getPitch
(JNIEnv*, jclass, jlong);

JNIEXPORT jobject JNICALL Java_com_koc_robot_freetype_Bitmap_getBuffer
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Bitmap_getNumGray
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Bitmap_getPixelMode
(JNIEnv*, jclass, jlong);

/* GlyphMetrics */
JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getWidth
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getHeight
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getHoriBearingX
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getHoriBearingY
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getHoriAdvance
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getVertBearingX
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getVertBearingY
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphMetrics_getVertAdvance
(JNIEnv*, jclass, jlong);

/* face */
JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_Face_getFaceFlags
(JNIEnv*, jclass, jlong);
    
JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_Face_getGlyph
(JNIEnv*, jclass, jlong);
    
JNIEXPORT jlong JNICALL java_com_koc_robot_freetype_Face_getSize
(JNIEnv*, jclass, jlong);

/* GlyphSlot */
JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_GlyphSlot_getMetrics
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getLinearHoriAdvance
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getLinearVertAdvance
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getAdvanceX
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getAdvanceY
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getFormat
(JNIEnv*, jclass, jlong);

JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_GlyphSlot_getBitmap
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getBitmapLeft
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_GlyphSlot_getBitmapTop
(JNIEnv*, jclass, jlong);
    
/* size */
JNIEXPORT jlong JNICALL Java_com_koc_robot_freetype_Size_getMetrics
(JNIEnv*, jclass, jlong);

/* size metrics */
JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getXppem
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getYppem
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getXscale
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getYscale
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getAscender
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getDescender
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getHeight
(JNIEnv*, jclass, jlong);

JNIEXPORT jint JNICALL Java_com_koc_robot_freetype_SizeMetrics_getMaxAdvance
(JNIEnv*, jclass, jlong);
    
JNIEXPORT void JNICALL Java_com_koc_robot_util_BufferUtils_freeMemory
(JNIEnv*, jclass, jobject);
    
JNIEXPORT jobject JNICALL Java_com_koc_robot_util_BufferUtils_newDisposableByteBuffer
    (JNIEnv*, jclass, jint);
    
JNIEXPORT void JNICALL Java_com_koc_robot_util_BufferUtils_copyJni
    (JNIEnv*, jclass, jbyteArray, jint, jobject, jint, jint);

#ifdef __cplusplus
}
#endif

#endif
